
import { PagePath } from "@/app/(dashboard)/common/config/path";
import { setProgressShow } from "@/store/stores/other";
import { usePathname, useRouter } from "next/navigation";
import { useDispatch } from "react-redux";

/**路由跳转的同时，可以有进度条展示，并鉴权。 把普通的router.push全部换成这个。 能用MyLink尽量使用，减少编程式路由导航。 */
const useRouterTo = () => {
    const dispatch = useDispatch();
    const router = useRouter()
    const pathname = usePathname();
    /**展示进度条 */
    const showProgress = () => {
        dispatch(setProgressShow({ progressShow: true }))
    }
    /**关闭进度条 */
    const hideProgress = () => {
        dispatch(setProgressShow({ progressShow: false }))
    }
    /**路由跳转 （带进度条） 使用此函数的函数，请勿使用useCallback包裹，或者在依赖项中添加 allowUrl*/
    const routerTo = (path: PagePath) => {
        if (pathname === path) {
            console.log('路径相同，不跳转');
            return
        };

        hideProgress()
        showProgress()
        router.push(path)
    }
    return {
        /**展示进度条 */
        showProgress,
        /**关闭进度条 */
        hideProgress,
        /**路由跳转 （带进度条） 使用此函数的函数，请勿使用useCallback包裹，或者在依赖项中添加 allowUrl*/
        routerTo
    }
}
export default useRouterTo